home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / parallel / client < prev    next >
Text File  |  1992-04-11  |  3KB  |  60 lines

  1. %----------------------------------------------------------------------
  2. %----Linda muProlog Process Library
  3. %----
  4. %----Written by Geoff Sutcliffe, 29/11/89
  5. %----------------------------------------------------------------------
  6. %----Declare . as a prefix operator to allow atomic writes
  7. ?-op(100,xf,.).
  8. %----------------------------------------------------------------------
  9. %----eval sends a request
  10. eval(Goal,File):-
  11.     send_request(server_eval(Goal,File)).
  12. %----------------------------------------------------------------------
  13. %----out sends a request
  14. out(Tuple):-
  15.     send_request(server_out(Tuple)).
  16. %----------------------------------------------------------------------
  17. %----in sends a request with a reply channel, and reads the reply
  18. in(Tuple):-
  19.     write_reply_channel(Write_reply_channel),
  20.     send_request(server_in(Tuple,Write_reply_channel)),
  21.     receive_answer(Tuple).
  22. %----------------------------------------------------------------------
  23. %----inp sends a request with a reply channel, and reads the reply. The
  24. %----reply may be fail
  25. inp(Tuple):-
  26.     write_reply_channel(Write_reply_channel),
  27.     send_request(server_inp(Tuple,Write_reply_channel)),
  28.     receive_answer(Tuple).
  29. %----------------------------------------------------------------------
  30. %----rd sends a request with a reply channel, and reads the reply
  31. rd(Tuple):-
  32.     write_reply_channel(Write_reply_channel),
  33.     send_request(server_rd(Tuple,Write_reply_channel)),
  34.     receive_answer(Tuple).
  35. %----------------------------------------------------------------------
  36. %----rdp sends a request with a reply channel, and reads the reply. The
  37. %----reply may be fail
  38. rdp(Tuple):-
  39.     write_reply_channel(Write_reply_channel),
  40.     send_request(server_rdp(Tuple,Write_reply_channel)),
  41.     receive_answer(Tuple).
  42. %----------------------------------------------------------------------
  43. %----Send a request by writing down the request channel
  44. send_request(Request):-
  45.     write_request_channel(Write_request_channel),
  46.     write_term(Write_request_channel,Request).
  47. %----------------------------------------------------------------------
  48. %----Receive an answer by reading the reply channel. As only variables
  49. %----can be read, use a new variable and unify afterwards
  50. receive_answer(Answer):-
  51.     read_reply_channel(Read_reply_channel),
  52.     read(Read_reply_channel,Term_read),
  53.     Answer = Term_read.
  54. %----------------------------------------------------------------------
  55. %----Write a term with a . - horrible hack to make writes atomic
  56. write_term(Channel,Term):-
  57.     Structure =.. ['.',Term],
  58.     writeln(Channel,Structure).
  59. %----------------------------------------------------------------------
  60.